package com.topnav.mc.zzd;

import com.js.lib.result.Result;
import com.topnav.mc.uitls.RedisUtil;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Map;

/**
 * @Author: kenny
 * @Date: 2024/1/8 11:06
 */
@Component
public class ZzdApiUrl {
    //private String randomCode=null;
    //private String sessionId=null;

    //@Resource
    //private ZzdConstant zzdConstant;

    /**
     * 获取随机数
     * @return
     */
    public String random(){
        return String.format("%srandom",ZzdConstant.ZZD_URL);
        //GET https://api.smart-ptt.com/ptt/random
    }

    /**
     * 用户登录
     * @return
     */
    public String organizationLogin(Map<String, Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sorganization;jsessionid=?method=login",ZzdConstant.ZZD_URL));
        sb.append("&account=").append(param.get("account"));
        sb.append("&pwd=").append(param.get("pwd"));
        sb.append("&timeZoneOffset=").append(param.get("timeZoneOffset"));
        return sb.toString();
        //https://api.smart-ptt.com/ptt/organization?method=login
        /*
        account	是	string	账号
        pwd	是	string	密码(hex_hmac_sha1(random, hex_sha1(value)))
        timeZoneOffset	是	int	格林威治时间和本地时间之间的时差，单位分钟
        */
    }
    /**
     * 选择语言接口
     */
    public  String setLanguage(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sorganization;jsessionid=?method=setLanguage",ZzdConstant.ZZD_URL));
        sb.append("&language=").append(param.get("language"));
        return sb.toString();
        //GET https://api.smart-ptt.com/ptt/organization?method=setLanguage
        /*language	是	string	可选语言：
        zh（简体中文）
        zh-TW（繁体中文）
        en（英语）
        es-ES（西班牙语）
        uk-UA（乌克兰语）
        it-IT（意大利语）
        ja-JP（日本语）
         */
    }

    /**
     * 增加用户
     * @param param
     * @return
     */
    public  String newUser(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%suser;jsessionid=?method=add",ZzdConstant.ZZD_URL));
        sb.append("&user_account=").append(param.get("user_account"));
        sb.append("&pwd=").append(param.get("pwd"));
        sb.append("&user_name=").append(param.get("user_name"));
        sb.append("&proxy_account=").append(param.get("proxy_account"));
        sb.append("&proxy_pwd=").append(param.get("proxy_pwd"));
        sb.append("&bill_id=").append(param.get("bill_id"));
        sb.append("&bill_type=").append(param.get("bill_type"));
        if (param.get("clientType")!=null)
            sb.append("&clientType=").append(param.get("clientType"));
        if (param.get("group_ids")!=null)
            sb.append("&group_ids=").append(param.get("group_ids"));
        if (param.get("default_group")!=null)
            sb.append("&default_group=").append(param.get("default_group"));
        if (param.get("tel")!=null)
            sb.append("&tel=").append(param.get("tel"));
        //if (param.get("privilege")!=null)
        sb.append("&privilege=").append(ZzdConstant.ZZD_PRIVILEGE);
        if (param.get("priority")!=null)
            sb.append("&priority=").append(param.get("priority"));
        if (param.get("imei")!=null)
            sb.append("&imei=").append(param.get("imei"));
        if (param.get("imei2")!=null)
            sb.append("&imei2=").append(param.get("imei2"));
        if (param.get("iccid")!=null)
            sb.append("&iccid=").append(param.get("iccid"));
        if (param.get("desc")!=null)
            sb.append("&desc=").append(param.get("desc"));
        //return sb.toString();
        return  sb.toString();
        //https://api.smart-ptt.com/ptt/user?method=add&user_account=corget
        // &pwd=111111&user_name=bruce&proxy_account=test&proxy_pwd=41a5c8e3479c6868e6133c372ab9f1c666e154f0c34d85ee831d655082d1531c
        // &bill_id=674309&bill_type=1&group_ids=920&default_group=920&tel=13623798888&privilege=6&priority=0
        /*
        user_account	是	string	账号
        pwd	是	string	密码，hex_sha1(pwd)
        user_name	是	string	用户名称
        proxy_account	是	string	代理商账号
        proxy_pwd	是	string	代理商密码   (hex_hmac_sha1(random, hex_sha1(value)))
        bill_id	是	int	模板订单ID   (首先要在代理商平台中创建未激活的[功能、时长]模板订单)
        bill_type	是	int	1
        clientType	否	int	用户设备类型，具体请查看附录-用户类型信息
        group_ids	否	string	群组id，多个以逗号分割
        default_group	否	int	默认群组，从群组id中选择
        tel	否	string	手机号
        privilege	否	int	用户权限，具体请查看附录-用户权限信息
        priority	否	int	用户默认进组优先级1-10，数字越大级别越高
        imei	否	string	IMEI
        imei2	否	string	IMEI2
        iccid	否	string	Iccid
        desc	否	string	用户描述
        */

    }

    /**
     * 查询用户
     * @param param
     * @return
     */
    public String queryUser(Map<String, Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%suser;jsessionid=?method=get",ZzdConstant.ZZD_URL));
        if (param.get("limit")!=null)
            sb.append("&limit=").append(param.get("limit"));
        if (param.get("page")!=null)
            sb.append("&page=").append(param.get("page"));
        if (param.get("order_by")!=null)
            sb.append("&order_by=").append(param.get("order_by"));
        if (param.get("order_type")!=null)
            sb.append("&order_type=").append(param.get("order_type"));
        if (param.get("user_status")!=null)
            sb.append("&user_status=").append(param.get("user_status"));
        if (param.get("user_online")!=null)
            sb.append("&user_online=").append(param.get("user_online"));
        if (param.get("user_name")!=null)
            sb.append("&user_name=").append(param.get("user_name"));
        if (param.get("user_account")!=null)
            sb.append("&user_account=").append(param.get("user_account"));
        if (param.get("group_id")!=null)
            sb.append("&group_id=").append(param.get("group_id"));
        return sb.toString();
        //GET https://api.smart-ptt.com/ptt/user?method=get
        /*
        limit	否	int	每页数量，默认15，最大100
        page	否	int	页码，默认0
        order_by	否	string	排序列(id|account|name|group_id|status|bill_end_time)，默认id
        order_type	否	string	排序方向(asc|desc)，默认asc
        user_status	否	int	用户使用状态(0暂停|1正常)
        user_online	否	int	用户在线状态(0离线|1在线)
        其他查询条件	否	--	以下参数只可填写其中一个
        user_name	否	string	用户名称
        user_account	否	string	用户账号
        group_id	否	int	用户所在群组id
        */
    }

    /**
     * 激活用户
     * @param param
     * @return
     */
    public  String activeAccount(Map<String,String> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%suser;jsessionid=?method=active",ZzdConstant.ZZD_URL));
        sb.append("&user_ids=").append(param.get("user_ids"));
        return sb.toString();

        //GET https://api.smart-ptt.com/ptt/user?method=active
    }


    /**
     * 查询群组
     * @param param
     * @return
     */
    public  String queryGroup(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sgroup;jsessionid=?method=get",ZzdConstant.ZZD_URL));
        if (param.get("limit") != null)
            sb.append("&limit=").append(param.get("limit"));
        if (param.get("page") != null)
            sb.append("&page=").append(param.get("page"));
        if (param.get("order_by") != null)
            sb.append("&order_by=").append(param.get("order_by"));
        if (param.get("order_type") != null)
            sb.append("&order_type=").append(param.get("order_type"));
        if (param.get("group_id") != null)
            sb.append("&group_id=").append(param.get("group_id"));
        if (param.get("group_name") != null)
            sb.append("&group_name=").append(param.get("group_name"));
        return sb.toString();
        /*
        limit	否	int	每页数量，默认15，最大100
        page	否	int	页码，默认0
        order_by	否	string	排序列(id|name)，默认id
        order_type	否	string	排序方向(asc|desc)，默认asc
        其他查询条件	否	--	以下参数只可填写其中一个
        group_id	否	int	群组id
        group_name	否	string	群组名称
        */

    }
   //https://api.smart-ptt.com/ptt/group?method=get&limit=15&page=0&order_by=id&order_type=desc&group_id=920

    /**
     * 新建群组
     * @param param
     * @return
     */
    public  String newGroup(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sgroup;jsessionid=?method=add",ZzdConstant.ZZD_URL));
        if (param != null){
            sb.append("&group_name=").append(param.get("groupName"));
            sb.append("&contact_name=").append(param.get("contactName"));
            if (param.get("contactPhone") != null)
                sb.append("&contact_phone=").append(param.get("contactPhone"));
            if (param.get("showUser") != null)
                sb.append("&show_user=").append(param.get("showUser"));
            if (param.get("priority") != null)
                sb.append("&priority=").append(param.get("priority"));

        }
        return  sb.toString();
        //GET https://api.smart-ptt.com/ptt/group?method=add
        /*
        group_name	是	string	群组名称
        contact_name	是	string	联系人名称，没有传空字符串
        contact_phone	否	string	用户名称
        show_user	否	int	显示成员(0不显示|1显示)，默认1
        priority	否	int	群组优先级（1-10，数字越大，等级越高）
        */

    }

    /**
     * 增加群组成员
     * @param param
     * @return
     */
    public  String newGroupUser(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sgroupuser;jsessionid=?method=add",ZzdConstant.ZZD_URL));

        sb.append("&group_id=").append(param.get("group_id"));
        sb.append("&user_ids=").append(param.get("user_ids"));
        if (param.get("default_group") != null)
            sb.append("&default_group=").append(param.get("default_group"));

        //GET https://api.smart-ptt.com/ptt/groupuser?method=add
        /*
        group_id	是	string	群组id
        user_ids	是	string	用户id，多个以逗号分隔
        default_group	否	int	是否默认群组（1是默认群组|0否）
        */
        return sb.toString();
    }

    /**
     * 修改群组成员
     * @param param
     * @return
     */
    public  String updateGroupUser(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sgroupuser;jsessionid=?method=updateGroupUser",ZzdConstant.ZZD_URL));
        sb.append("&group_id=").append(param.get("group_id"));
        sb.append("&user_id=").append(param.get("user_id"));
        if (param.get("priority") != null)
            sb.append("&priority=").append(param.get("priority"));
        if (param.get("state") != null)
            sb.append("&state=").append(param.get("state"));

        //GET https://api.smart-ptt.com/ptt/groupuser?method=updateGroupUser
        /*
        group_id	是	string	群组id
        user_id	是	string	群组中的用户id
        priority	否	int	用户组内优先级（1-10，数字越大，优先级越高）
        state	否	int	用户组内隐身（0隐身|1正常）
        */
        return sb.toString();
    }

    /**
     * 企业删除群组成员接口
     * @param param
     * @return
     */
    public  String deleteGroupUser(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sgroupuser;jsessionid=?method=delete",ZzdConstant.ZZD_URL));
        sb.append("&group_id=").append(param.get("group_id"));
        sb.append("&user_ids=").append(param.get("user_ids"));

        //GET https://api.smart-ptt.com/ptt/groupuser?method=delete
        /*
        group_id	是	string	群组id
        user_ids	是	string	用户id，多个以逗号分隔
        */
        return sb.toString();
    }

    public  String deleteGroup(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sgroup;jsessionid=?method=delete",ZzdConstant.ZZD_URL));
        sb.append("&group_ids=").append(param.get("group_ids"));

        //GET https://api.smart-ptt.com/ptt/group?method=delete
        /*
        group_ids	是	string	群组id，多个以逗号分隔
        */
        return sb.toString();
    }

    public  String deleteUser(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%suser;jsessionid=?method=delete",ZzdConstant.ZZD_URL));
        sb.append("&user_ids=").append(param.get("user_ids"));

        //GET https://api.smart-ptt.com/ptt/user?method=delete
        /*
        group_ids	是	string	群组id，多个以逗号分隔
        */
        return sb.toString();
    }

    /**
     * 查询订单
     * @param param
     * @return
     */
    public  String queryOrder(Map<String,Object> param){
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%sbill;jsessionid=?method=get",ZzdConstant.ZZD_URL));

        if (param.get("limit") != null)
            sb.append("&limit=").append(param.get("limit"));
        if (param.get("page") != null)
            sb.append("&page=").append(param.get("page"));
        if (param.get("status") != null)
            sb.append("&status=").append(param.get("status"));
        return sb.toString();
/*
  https://api.smart-ptt.com/ptt/bill?method=get&status=0
        limit	否	int	每页数量，默认15，最大100
        page	否	int	页码，默认0
        status	否	int	激活状态，(0未激活|1激活)


*/

    }


}
